#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<vector>
#include <string>
#include <math.h>
using namespace std;
//void duplicateZeros(vector<int>& arr) 
//{
//	int cur = 0, dest = 0,n= arr.size();
//	while (dest < n-1)
//	{
//		if (arr[cur]==0)
//		{
//			cur++;
//			dest += 2;
//		}
//		else
//		{
//			cur++;
//			dest++;
//		}
//	}
//	while (cur>=0)
//	{
//		if (arr[cur] == 0)
//		{
//			if (dest == n)
//			{
//				dest--;
//				arr[dest--] = 0;
//				cur--;
//			}
//			else
//			{
//				arr[dest--] = 0;
//				if (dest < 0)
//				{
//					break;
//				}
//				arr[dest--] = 0;
//				cur--;
//			}
//		}
//		else
//		{
//			arr[dest--] = arr[cur--];
//		}
//	}
//}

//int main()
//{
//	int t = 0;
//	cin >> t;
//	while (t--)
//	{
//		int a, b, l, r;
//		cin >> a >> b >> l >> r;
//		vector<int> v;
//		v.resize(r+1);
//		v[0] = a;
//		v[1] = b;
//		for (int i = 2; i <= r; i++)
//		{
//			v[i] = (v[i - 1] + v[i - 2])%1000;
//		}
//		int ret = 0;
//		for (int i = l; i <= r; i++)
//		{
//			ret += v[i];
//			if (ret >= 1000)
//			{
//				ret %= 1000;
//			}
//		}
//		cout << ret<<endl;
//	}
//	return 0;
//}
//int main()
//{
//	int t = 0;
//	cin >> t;
//	long double ret = 0;
//	long double pi = 3.1415926535897932;
//	while (t--)
//	{
//		int r,a;
//		cin >> r >>a ;
//		ret += a / 360.0 * r * r * pi;
//	}
//	printf("%.3Lf", ret);
//	return 0;
//}
//double distance(double x1, double y1, double x2, double y2)
//{
//	double t1 = fabs(x1 - x2);
//	double t2 = fabs(y1 - y2);
//	double ret = sqrt(pow(t1, 2) + pow(t2, 2));
//	return ret;
//}
//int main()
//{
//	int t = 0;
//	cin >> t;
//	vector<double> vx, vy, vr;
//	vx.reserve(t);
//	vy.reserve(t);
//	vr.reserve(t);
//	while (t--)
//	{
//		double x, y, r;
//		cin >> x >> y>>r;
//		vx.push_back(x);
//		vy.push_back(y);
//		vr.push_back(r);
//	}
//	int p;
//	cin >> p;
//	int sz = vx.size();
//	int flag = 1;
//	for (int i = 0; i < sz && i != p + 1; i++)
//	{
//		double dis = distance(vx[p + 1], vy[p + 1], vx[i], vy[i]);
//		if (dis < vr[p + 1] + vr[i])
//		{
//			flag = 0;
//			cout << "Biu";
//			break;
//		}
//	}
//	if (flag)
//	{
//		cout << "Alive";
//	}
//	return 0;
//}
bool oblique(vector<string>& v,vector<string>::iterator& it,string& s,int& j)
{
	char initial = s[j];
	if()
}
int main()
{
	int t = 0;
	cin >> t;
	while (t--)
	{
		int n;
		cin >> n;
		vector<string> v;
		for (int i = 0; i < n; i++)
		{
			string s;
			cin >> s;
			v.push_back(s);
		}
		auto it = v.begin();
		while (it != v.end())
		{
			string s = *it;
			int j = 0;
			for (j = 0; j < s.size(); j++)
			{
				if (s[j] == 'B')
				{
					if (j==0 || s[j-1]!='B')
					{
						if (s[j + 1] == 'B' && s[j + 2] == 'B' && s[j + 3] == 'B'
							&& s[j + 4] == 'B')
						{
							cout << "Black";
							return 0;
						}
					}
					if (it == v.begin()||(*(it-1))[j]!='B')
					{
						if ((*(it + 1))[j] == 'B' && (*(it + 2))[j] == 'B' && (*(it + 3))[j] == 'B'
							&& (*(it + 4))[j] == 'B')
						{
							cout << "Black";
							return 0;
						}
					}
					if (oblique(v))
					{
						cout << "Black";
						return 0;
					}
				}
				else if (s[j] == 'W')
				{

				}
				else
				{

				}
			}
			it++;
		}
	}
	return 0;
}